// function Singer(name, gender) {
// 	this.name = name
// 	this.gender = gender
// }

// function Actor(name, gender, age) {
// 	Singer.call(this, name, gender)
// 	this.age = age
// }
// let actor = new Actor('周杰伦', 'male', 39)
// console.log(actor.name);
// console.log(actor.gender);

//指定第一个参数和其他参数
var obj = {
	user: 'Ducky',
	fn: function(a, b) {
		console.log(a + b);
		console.log(this.user);
	}
}
var b = obj.fn;
b.call(obj, 1, 2);


// 不指定参数
// var nickname = 'global'

// function getName() {
// 	console.log(this.nickname);
// }
// getName() //global
// getName.call() //global




// 手写call
// Function.prototype.my_call = function(context, ...args) {
// 	if (typeof context !== 'function') throw new TypeError('error')
// 	context = context || 'window'
// 	let fn = Symbol('fn')
// 	context[fn] = this //context.fn = this 
// 	const res = context[fn](...args)
// 	delete context[fn]
// 	return res
// }

// var name = 'cat'
// var obj = {
// 	name: 'dog'
// }

// function getName() {
// 	console.log(this.name);
// }
// getName() //cat
// getName.my_call(obj) //dog
// console.log(obj);
